import os
import string

# 定义文本文件存放的目录路径
texts_dir = 'assets/texts'

def count_characters_in_text_files():
    """
    统计指定目录下所有txt文件中的字符数并打印结果
    同时检测文件中是否包含除了,.以外的其他标点符号
    """
    
    # 检查目录是否存在
    if not os.path.exists(texts_dir):
        print(f"Error: Directory '{texts_dir}' does not exist.")
        return
    
    # 获取目录下所有.txt后缀的文件
    txt_files = [f for f in os.listdir(texts_dir) if f.endswith('.txt')]
    
    # 如果没有找到txt文件则返回
    if not txt_files:
        print(f"No .txt files found in '{texts_dir}'.")
        return
    
    # 定义允许的标点符号（逗号和句号）
    allowed_punctuation = {',', '.'}
    # 获取所有标点符号
    all_punctuation = set(string.punctuation)
    
    # 逐个处理文件
    for filename in txt_files:
        filepath = os.path.join(texts_dir, filename)
        try:
            # 以utf-8编码打开文件并读取内容
            with open(filepath, 'r', encoding='utf-8') as file:
                content = file.read()
                char_count = len(content)
                
                # 检查是否有不允许的标点符号
                has_other_punctuation = False
                for char in content:
                    if char in all_punctuation and char not in allowed_punctuation:
                        has_other_punctuation = True
                        break
                
                # 根据检查结果输出不同的信息
                if has_other_punctuation:
                    print(f"{filename}: {char_count}字符 有其它标点符号")
                else:
                    print(f"{filename}: {char_count}字符")
                    
        except Exception as e:
            print(f"Error reading {filename}: {str(e)}")

if __name__ == "__main__":
    count_characters_in_text_files()